#1.1 将元组或者列表等可迭代对象中的值分解成不同变量

tuples = (4, 5)
t1, t2 = tuples
print(t1, t2, tuples)

lists = [6, 7]
l1, l2 = lists
print(l1, l2, lists)

strings = 'Hello'
#如果变量个数少于或者超过strings的长度，都会有异常 (元组跟列表也一样)
s1, s2, s3, s4, s5 = strings
print(s1,s2,strings)



world = 'World'
#我们只需要 第0个和第4个
w0,_,_,_,w4 = world
print(w0,w4)

#1.2 将可迭代对象任意长度解压

recods = ['David', 'david@163.com', '0531-7498249', '0532-7490430']
#name ，email 相当于占分别将占住了列表前两个元素，然后把剩下的元素解压出来放入 phone_nums 这个列表中
name, email, *phone_nums = recods
print(name,email,phone_nums)

grades = ['A', 'B', 'C', 'D', 'E']
#如果将 *表达式 放到最前面，那么从后往前，开始数，除了已经有变量占有的元素，其它的都会放入新的列表中
*excellent, c ,d ,e = grades
print(excellent, c, d, e) 

a, b , *middle, e = grades
#如果将 *表达式 放到中部，除去前后变量占有的元素，其它的都会放入新的列表中
print(a, b, middle, e)

points = [
    ('x',10,20),
    ('y',40,60),
    ('x',70,90),
]
# *表达式 用于for循环
for point_name , *coordinates in points:
    if point_name == 'x':
        print('x点坐标',coordinates)
    elif point_name == 'y':
        print('y点坐标',coordinates)
    elif point_name == 'z':
        print('z点坐标',coordinates)


info = 'root:password:port'
# *表达式 用于字符串拆分
name, *others = info.split(':')
print(name,others)

